const { app, dialog } = require('electron');
/* 唤醒协议篇 */
const path = require('path');
const agreement = 'electron-playground-code'
const AGREEMENT_REGEXP = new RegExp(`^${agreement}://`) // 校检链接


// 注册唤醒协议
export function testProtoCol() {
    const isApp = app.isDefaultProtocolClient(agreement)
    console.log('当前程序是否为自定义协议的处理程序: ', isApp)

    const AgreementAppName = app.getApplicationNameForProtocol(`${agreement}://`)
    console.log('获取该自定义协议链接的应用处理程序的名字', AgreementAppName)

    const isDelete = app.removeAsDefaultProtocolClient(agreement)
    console.log('删除自定义协议', isDelete)
}


export function setDefaultProtocol() {
    // 自定义协议名

    let isSet = false;
    app.removeAsDefaultProtocolClient(agreement) // 
    // 开发模式下载window运行需要做兼容
    if (process.env.NODE_ENV === 'development' && process.platform === 'win32') {
        // 设置electron.exe 和 app的路径
        isSet = app.setAsDefaultProtocolClient(agreement, process.execPath,
            [path.resolve(process.argv[1]),]
        )
    } else {
        isSet = app.setAsDefaultProtocolClient(agreement)
    }
    console.log('是否注册成功', isSet)
}
// mac和windows唤醒应用不太一致 如何根据协议传递数据
export function watchProtocol() {
    console.log('正在监听')

    app.on('open-url', (event, url) => {
        const isProtocol = AGREEMENT_REGEXP.test(url)
        if (isProtocol) {
            console.log('获取协议链接，根据参数做各种事情')
            dialog.showMessageBox({
                type: 'info',
                message: 'Mac protocol自定义协议打开',
                detail: `自定义协议链接：${url}`,
            })
        }
    })
    // window系统下唤醒应用会激活second-instance事件 ready执行之后才能被监听
    app.on('second-instance', (event, commandLine) => {
        // commandLine是一个数组 唤醒的链接作为数组的一个元素放在这里面
        commandLine.forEach((str) => {
            console.log('是否触发')
            if (AGREEMENT_REGEXP.test(str)) {
                console.log('获取协议链接，根据参数做各种事情')
                dialog.showMessageBox({
                    type: 'info',
                    message: 'PC自定义协议打开',
                    detail: `自定义协议链接：${str}`,
                })
            }
        })
    })
}
// import 会自动执行一次该文件的函数吗
